package com.atguigu.gmall.item.vo;

import com.atguigu.gmall.pms.entity.CategoryEntity;
import com.atguigu.gmall.pms.entity.SkuImagesEntity;
import com.atguigu.gmall.pms.vo.ItemAttrGroupVo;
import com.atguigu.gmall.pms.vo.ItemSaleAttrValuesVo;
import com.atguigu.gmall.sms.vo.ItemSaleVo;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/*
商品详情页数据模型
 */
@Data
public class ItemVo {
    /*
    1,2,3级分类对象集合
     */
    private List<CategoryEntity> categories;
    /*
    品牌信息
     */
    private Long brandId;
    private String brandName;
    /*
    spu数据
     */
    private String spuName;
    private Long spuId;
    /*
    sku数据
     */
    private String skuId;
    private String defaultImage;//默认图片
    private List<SkuImagesEntity> images;//sku图片列表
    private String title;//sku标题
    private String subTitle;//sku副标题
    private BigDecimal price;//sku价格
    private Integer weight;//sku重量
    /*
    sku营销数据：
        满减 满800元减30元
        折扣 满几件打几折
        积分 送成长积分xx，送购买积分xx
        ItemSaleVo:
            String type
            String desc
        [{'type':'满减' , 'desc':'满2000 减100' },{'type':'折扣' , 'desc':'满2件，打20%折扣'}
         ,{'type':'积分', 'desc':'送1000成长积分,送500购物积分'}]
     */
    private List<ItemSaleVo> sales;
    //是否有货：查询sku的库存进行判断
    private Boolean store = false;
    /*
    spu下所有的sku的销售属性、id 和  值集合数据列表：
    销售属性遍历展示时每一个销售属性都需要以下三个属性值
        Long 销售属性的id    attrId
        String 销售属性的名称  attrName
        Set<String> 销售属性的值集合(不能重复) attrValues
        //spu下的sku集合：它们每一个属性 和 它们值的集合
        [{attrId: 2 , attrName:'颜色' , attrValues:['白色','黑色'] },
         {attrId: 3 , attrName:'运行内存' , attrValues:['8G' , '12G']},
         {attrId:4  , attrName:'机身存储' , attrValues:['128G']}]
     */
    //查询spu下所有的sku的销售属性 并按照attrid分组 将attrid组下的所有的值组合在一起展示
    private List<ItemSaleAttrValuesVo> saleAttrs;
    /*
    sku的销售属性id和值
        为了默认选中当前sku的销售属性
        Long attrId:
        String attrValue:

        { 3:'黑色' , 4: '8G' , 5:'128G'  }
     */
    private Map<Long , String> saleAttr;
    /*
    所有sku的 销售属性值拼接字符串 和 skuid映射关系
    方便页面选择一组销售属性后  获取对应的skuid进行跳转
    {'黑色,8G，128G':1 , '白色,8G,256G':2}
     */
    private String skuJsons;
    /*
    spu的图片集合：商品详情图片
     */
    private List<String> spuImages;
    /*
    spu的属性组  组的名称  组内的属性和值集合
    主体：
            上市月份：  2022
            产品名称： hehe
     基本信息：
            材质： 塑料
            xx:qq
      Group:
        String groupName
        List<Attr> attrValues;
      Attr:
        String attrName;
        String attrValue;
      [{groupName:'主体' , groupAttrs: [{attrName:'上市月份' , attrValue:2022},
            {attrName:'产品名称' , attrValue:hehe}]} , {} ,{}]
     */
    private List<ItemAttrGroupVo> groups;
}
